package com.fowo.api.sys.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fowo.api.sys.entity.SysDict;
import com.fowo.api.sys.entity.SysDictItem;
import com.fowo.api.sys.model.*;

import java.util.List;

/**
 * 系统字典服务
 * @author yl_ls
 */
public interface SysDictService extends IService<SysDict> {
    /**
     * 分页查询
     * @param searchParamPo 查询参数
     * @return 分页
     */
    Page<SysDictItemVo> pageSearch(SysDictSearchParamPo searchParamPo);

    /**
     * 删除
     * @param idList 编号列表
     * @return 是否成功
     */
    boolean delete(List<Long> idList);

    /**
     * 创建
     * @param createSysDictPo 创建数据
     * @return 是否成功
     */
    boolean create(CreateSysDictPo createSysDictPo);

    /**
     * 更新
     * @param updateSysDict 更新数据
     * @return 是否成功
     */
    boolean update(SysDict updateSysDict);

    /**
     * 项分页查询
     * @param searchParamPo 查询参数
     * @return 分页
     */
    Page<SysDictItem> itemPageSearch(SysDictItemSearchParamPo searchParamPo);

    /**
     * 创建项
     * @param createSysDictItemPo 项数据
     * @return 是否成功
     */
    boolean createItem(CreateSysDictItemPo createSysDictItemPo);

    /**
     * 更新项
     * @param updateSysDictItem 项数据
     * @return 是否成功
     */
    boolean updateItem(SysDictItem updateSysDictItem);

    /**
     * 删除项
     * @param idList 编号列表
     * @return 是否成功
     */
    boolean deleteItem(List<Long> idList);

    /**
     * 获取全部可用字典项
     * @return 字典项列表
     */
    List<SysDictAllItem> getAllItems();

    /**
     * 获取指定字典的可用字典项
     * @param code 字典代码
     * @return 字典项列表
     */
    List<SysDictAllItem> getDictItems(String code);
}
